//
//  main.c
//  lengthOfLongestSubstring
//
//  Created by edz on 2020/7/2.
//  Copyright © 2020 edz. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
    return 0;
}

// 无重复字符的最长子串

// 1. 先用指针1指向输入字符串的起始的元素。
// 2. 用指针1循环一一遍历字符串里的元素，如果遍历到还未出现的字符，就将子串长度一一增加。
// 3. 如果遍历到和之前相同的字符，就将当前子串长与最长子串长进行比较然后更新最长子串长度。
int lengthOfLongestSubstring(char * s)
{
    if(*s=='\0')
    {
        return 0;
    }
    else
    {
        int N=(int)strlen(s);
        int a[N];
        int i,j;
        int k=0;
        for(i=0;i<N;i++)
            a[i]=1;
        for(i=0;i<N-1;i++)
        {
            for(j=i+1;j<N;j++)
            {
                if(*(s+i)!=*(s+j))
                    {
                        k=i;
                        if(!findsame(s,k,j))
                        {
                            a[i]=a[i]+1;
                        }
                        else
                            break;
                    }
                else
                    break;
            }
        }
        int max=a[0];
        for(i=0;i<N-1;i++)
            if(a[i]>max)
                max=a[i];
        return max;
    }
}

int findsame(char *s, int k,int j)
{
    while(*(s+k)!=*(s+j)&&k<j)
    {
        k++;
    }
    if(j==k)
        return 0;//不存在相等的
    else
        return 1;//存在相等的
}


/*
 int lengthOfLongestSubstring(char * s){
     int index[128] = {0};
     int start=0,max=0,count=0;
     int i;
     for( i=0;s[i]!='\0';i++)
     {
         if(index[s[i]]>start)
         {
             count = i - start;
             start = index[s[i]];
             if(count>max)
             {
                 max = count;
             }

         }
         index[s[i]] = i+1;
     }
     count = i - start;
      if(count>max)
     {
         max = count;
     }
     return max;
 }

 */
